home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************/
- /* Gebuehren-Auswertung fuer CALLING.LOG 09.09.94 */
- /* */
- /* Passen Sie folgende Werte/Einstellungen an Ihr System an: */
- /* - ZOC-Protokoll-Datei (default: CALLING.LOG) */
- /* - den Preis einer Telefoneinheit (z.Z. 0.23 DM) */
- /* - die Zeitspannen in Sekunden fuer Nahzone, Regionalzone und Weitzone */
- /* (Normal- und Billigtarife) */
- /* - alle Vorwahlnummern Ihres Nahbereiches in 'vorwahl_nahbereich' */
- /* eintragen */
- /* - alle Vorwahlnummern Ihres Regionalbereiches in */
- /* 'vorwahl_regionalbereich' eintragen */
- /* */
- /* */
- /* Es werden folgende Feiertag beruecksichtigt: */
- /* 01.01. 01.05. 03.10. 25.12. 26.12. */
- /* Es wird ebenfalls zwischen Wochenenden (Sa./So.) und Werktagen */
- /* unterschieden. */
- /* */
- /* Greetings/2 FIDO : Heiko Kamp@2:245/6803.1*/
- /* Heiko Internet: kamp@warp.saar.de */
- /* TYPE FLAMES > NUL Voice : ++49 6831-42294 */
- /* */
- /****************************************************************************/
-
- /* -------------- Haupt-Programm --------------- */
-
- CALL RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
- CALL SysLoadFuncs
-
- CLS
- /* Name der Protokoll-Datei - normalerweise "CALLING.LOG" */
- datei = 'f:\dfue\zocbeta\calling.log' /* !!!!!!!!! ANPASSEN !!!!!!!!! */
-
- /* Kosten einer Einheit in DM */
- einheit = 0.23 /* !!!!!!!!! ANPASSEN !!!!!!!!! */
-
- /* Trennzeichen zwischen Vorwahl und Telefonnummer (xxxx-yyyyy) */
- trenner = '-'
-
- /* CONNECT-Zeit in Sekunden */
- connect_time = 20 /* Dauer des Verbindungsaufbaus bis zur */
- /* CONNECT-Meldung */
-
- /* Tarifzonen - Dauer in Sekunden */
- nahbereich.1 = 360 /* Normaltarif */ /* !!!! ANPASSEN !!!! */
- nahbereich.2 = 720 /* Billigtarif */ /* !!!! ANPASSEN !!!! */
- regional.1 = 60 /* Normaltarif */ /* !!!! ANPASSEN !!!! */
- regional.2 = 120 /* Billigtarif */ /* !!!! ANPASSEN !!!! */
- weit.1 = 21 /* Normaltarif */ /* !!!! ANPASSEN !!!! */
- weit.2 = 42 /* Billigtarif */ /* !!!! ANPASSEN !!!! */
-
- /* Tarifzonen */
- /* Nahbereichs-Nummern */ /* !!!!!!!!! ANPASSEN !!!!!!!!! */
- vorwahl_nahbereich = '06835 06832 06834 06827 06809 06806 06825 06881
- 06888 06872 06861 06869 06864 06833 0681 06838 06887 06897 06836 06898 06802
- 06874 06837 06831'
- n_max = WORDS(vorwahl_nahbereich)
-
- /* Regionalbereichs-Nummern */ /* !!!!!!!!! ANPASSEN !!!!!!!!! */
- vorwahl_regionalbereich = '06332 06337 06338 06373 06384 06386 06500 06501
- 06503 0651 06581 06582 06583 06584 06586 06587 06588 06589 06782 06789 06803
- 06804 06805 06821 06824 06826 0684- 0685- 06865 06866 06867 06868 06871 06873
- 06875 06876 06893 068
- 94
- '
- r_max = WORDS(vorwahl_regionalbereich)
-
- /*************************** ENDE DER ANPASSUNGEN ***************************/
- SAY ' Datum Uhrzeit Dauer Vorwahl Zone Einheiten'
- SAY ' (ohne CONNECT-Zeit) (CONNECT-Zeit
- incl.)'
- SAY
- '---------------------------------------------------------------------------'
-
- line = 1 /* Zeilennummern zuruecksetzen */
- einheiten = 0 /* Einheiten zuruecksetzen */
- line = line + 1 /* Zeilennummer inkrementieren */
- zeiel = LINEIN(datei,1,0) /* Anfangsposition */
- zeile = 'empty'
-
- DO WHILE (LENGTH(zeile) <> 0)
- zeile = LINEIN(datei) /* neue Zeile einlesen */
- tarif = 1 /* Tarif mit Normaltarif */
- /* initialisieren */
- sekunden_einheit = 0 /* initialisieren */
-
- IF WORD(zeile,3)='C#:' THEN /* Zeile mit Telefon-Nr. gefunden */
- DO
- tag = SUBSTR(zeile,1,2) /* Tagesdatum isolieren */
- monat = SUBSTR(zeile,4,2) /* Monatszahl isolieren */
- jahr = SUBSTR(zeile,7,4) /* Jahreszahl isolieren */
- CALL wochentag tag, monat, jahr /* Wochentag bestimmen */
- w_tag = RESULT /* Nr. des Wochentags in w_tag ablegen
- */
-
- stunden = SUBSTR(zeile,12,2) /* Stunden (Uhrzeit) isolieren */
- minuten = SUBSTR(zeile,15,2) /* Minuten (Uhrzeit) isolieren */
- sekunden= SUBSTR(zeile,18,2) /* Sekunden (Uhrzeit) isolieren */
-
- SELECT
- WHEN (stunden>17) | (stunden<7) THEN tarif = 2 /*Billig-Tarif zw. 18
- und 7 Uhr */
- WHEN (w_tag = 0) | (w_tag = 6) THEN tarif = 2 /*Billig-Tarif an
- Wochenenden */
- WHEN tag = 1 & monat = 1 THEN tarif = 2 /* Billig-Tarif an Feiertagen
- */
- WHEN tag = 1 & monat = 5 THEN tarif = 2 /* Billig-Tarif an Feiertagen
- */
- WHEN tag = 3 & monat =10 THEN tarif = 2 /* Billig-Tarif an Feiertagen
- */
- WHEN tag =25 & monat =12 THEN tarif = 2 /* Billig-Tarif an Feiertagen
- */
- WHEN tag =26 & monat =12 THEN tarif = 2 /* Billig-Tarif an Feiertagen
- */
- OTHERWISE
- tarif = 1
- END /* SELECT */
-
- vorwahlpos = LASTPOS(trenner,zeile) - 26 /* Vorwahlnummer lokalisieren
- */
- IF vorwahlpos <=0 THEN vorwahlpos = 0 /* Keine Vorwahl eingeben */
- vorwahl = SUBSTR(zeile,26,vorwahlpos) /* Vorwahlnummer isolieren */
- speicher = vorwahl
-
- IF vorwahlpos = 0 THEN
- DO
- sekunden_einheit = nahbereich.tarif
- vorwahl = Nahbereich
- END
-
- DO i=1 TO n_max
- IF vorwahlpos = 0 THEN LEAVE
- vorwahl_x = WORD(vorwahl_nahbereich, i) /* jeweiles ein
- Element aus der Liste holen */
- DO j=1 TO LENGTH(vorwahl_x)
- IF SUBSTR(vorwahl_x,j,1) = '-' THEN /* Element auf Joker
- '-' pruefen */
- DO
- vorwahl_x = SUBSTR(vorwahl_x,1,LENGTH(vorwahl_x)-1) /* Wenn Joker
- letztes Zeichen (Joker) loeschen */
- vorwahl = SUBSTR(vorwahl,1,LENGTH(vorwahl)-1)
- END
- IF (vorwahl = vorwahl_x) then
- DO
- sekunden_einheit = nahbereich.tarif
- zone = 'Nah '
- END
- END j
- vorwahl = speicher
- END i
-
-
- DO i=1 TO r_max
- IF vorwahlpos = 0 THEN LEAVE
- vorwahl_x = WORD(vorwahl_regionalbereich, i) /* jeweiles ein
- Element aus der Liste holen */
- DO j=1 TO LENGTH(vorwahl_x)
- IF SUBSTR(vorwahl_x,j,1) = '-' THEN /* Element auf Joker
- '-' pruefen */
- DO
- vorwahl_x = SUBSTR(vorwahl_x,1,LENGTH(vorwahl_x)-1) /* Letzes
- Zeiche (Joker) loeschen */
- vorwahl = SUBSTR(vorwahl,1,LENGTH(vorwahl)-1)
- END
- IF (vorwahl = vorwahl_x) then
- DO
- sekunden_einheit = regional.tarif
- zone = 'Reg.'
- END
- END j
- vorwahl = speicher
- END i
-
- IF sekunden_einheit = 0 then
- DO
- sekunden_einheit = weit.tarif
- zone = 'Weit'
- END
-
- DO WHILE WORD(zeile,3) <> 'C-:'
- line = line + 1
- zeile = LINEIN(datei)
- END
-
- dauer_stunden = SUBSTR(zeile,26,2)
- dauer_minuten = SUBSTR(zeile,29,2)
- dauer_sekunden = SUBSTR(zeile,32,2)
- dauer_gesamt = (dauer_stunden * 3600) + (dauer_minuten * 60) +
- dauer_sekunden + connect_time
-
- einheiten = einheiten + (dauer_gesamt % sekunden_einheit) + 1
-
- SAY tag'.'monat'.'jahr' 'stunden':'minuten':'sekunden'
- 'dauer_stunden':'dauer_minuten':'dauer_sekunden' 'RIGHT(vorwahl,12)' 'zone'
- 'RIGHT((dauer_gesamt % sekunden_einheit) + 1,10)
- END /* DO WHILE */
- END /* DO WHILE */
-
- SAY
- '---------------------------------------------------------------------------'
- SAY ' Einheiten :' RIGHT(einheiten,10)
- SAY 'Gesamte Kosten : 'einheiten * einheit 'DM'
- SAY
-
- EXIT
-
-
-
-
- wochentag:PROCEDURE EXPOSE tag monat jahr
- /* wochentag */
- /* a // b = a div b / x % y = x mod y */
-
- t = tag /* Werte sichern */
- m = monat
- j = jahr
- if monat > 2 THEN monat = monat - 2
- else
- do
- monat = monat + 10
- jahr = jahr - 1
- end
- jahrhundert = (jahr%10)
- jahr = (jahr//100)
- wo_tag = (jahr%4)+(jahrhundert%4)+((13*monat-1)%5)+tag+jahr-(2*jahrhundert)
- wo_tag = (wo_tag//7)
- IF wo_tag < 0 THEN wo_tag = wo_tag + 7
-
- tag = t /* alte Werte wieder herstellen */
- monat = m
- jahr = j
- RETURN wo_tag
-
-